package co.edu.uniquindio.ondas.negocio;

import java.util.List;

import co.edu.uniquindio.ondas.dtos.ResumenConsultaDTO;
import co.edu.uniquindio.ondas.dtos.ResumenInvestigacionDTO;
import co.edu.uniquindio.ondas.entidades.Actividad;
import co.edu.uniquindio.ondas.entidades.Asesor;
import co.edu.uniquindio.ondas.entidades.Bitacora4Maestro;
import co.edu.uniquindio.ondas.entidades.ComentarioAsesor;
import co.edu.uniquindio.ondas.entidades.RespuestaConsulta;
import co.edu.uniquindio.ondas.entidades.Segmento;

/**
 * @author Javier
 *Interface que define los metodos  para el AsesorEJB
 *permite realizar las operaciones del Asesor
 */
public interface AsesorEJBInterface {

	
	/**
	 * Metodo que permite inciar una sesion de un Asesor
	 * @param id
	 * @param clave
	 * @return operador logico (indica inicio sesion o no)
	 */
	public boolean inicioSesionAsesor(String id, String clave);
	/**
	 * Metodo que permite editar un Asesor
	 * @param asesor
	 * @return operador logico (indica modifica o no modifica)
	 */
	public boolean modificarAsesor(Asesor asesor);
	/**
	 * Metodo que permite obtener un Asesor por su identificacion
	 * @param id
	 * @return Asesor
	 */
	public Asesor getAsesor(String id);
	/**
	 * Metodo que permite obtener un listado de las consultas hechas a un Asesor
	 * @param idAsesor
	 * @return lista de consultas
	 */
	public List<ResumenConsultaDTO> obtenerConsultasAsesor(String idAsesor);
	/**
	 * @param idConsulta
	 * @return Lista de Respuestas de Consultas
	 */
	public List<RespuestaConsulta> obtenerRespuestasConsulta(long idConsulta);
	/**
	 * Metodo que permite crear una respuesta a una consulta
	 * @param respuesta
	 * @param idConsulta
	 * @return operador logico (indica creada o no creada)
	 */
	public boolean crearRespuestaConsulta(RespuestaConsulta respuesta, long idConsulta);
	/**
	 * Metodo que permite obtener un listado de la investigaciones asignadas a un Asesor
	 * @param idAsesor
	 * @return Lista de investigaciones del Asesor
	 */
	public List<ResumenInvestigacionDTO> obtenerInvestigacionAsesor(String idAsesor);
	/**
	 * Metodo que permite obtener los segmentos de una ivestigacion
	 * @param idInvestigacion
	 * @return listado de segmentos de una investigacion
	 */
	public List<Segmento> obtenerSegmentosInvestigacion(long idInvestigacion);
	/**
	 * Metodo que permite obtener las actividades de una investigacion
	 * @param idInvestigacion
	 * @return lista de actividades de una investigacion
	 */
	public List<Actividad>obtenerActividadesInvestigacion(long idInvestigacion);
	/**
	 * Metodo que permite obtener una Bitacora4Maestro por medio de su identificador
	 * @param idInvestigacion
	 * @return Bitacora4Maestro
	 */
	public Bitacora4Maestro obtenerBitacora4Maestro(long idInvestigacion);
	/**
	 * Metodo que permite crear un comentario de un Asesor
	 * @param comentarioAsesor
	 * @param idInvestigacion
	 * @return operador logico (indica creado o no creado)
	 */
	public boolean crearComentarioAsesor(ComentarioAsesor comentarioAsesor, long idInvestigacion);
}
